package simple.number;

/**
 * <a href="https://leetcode-cn.com/problems/reverse-integer">7. 整数反转</a>
 * 给你一个 32 位的有符号整数 x ，返回 x 中每位上的数字反转后的结果。
 * 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 * 示例 1：
 *      输入：x = 123
 *      输出：321
 * 示例 2：
 *      输入：x = -123
 *      输出：-321
 * @author 刘学松
 * @date 2021/2/9 18:33
 */
public class 整数反转 {
    public static void main(String[] args) {
        System.out.println(reverse(13422524));
    }

    public static int reverse(int x) {
        int num = 0;
        int temp;
        while (x != 0) {
            temp = x % 10;
            x /= 10;
            if (num > Integer.MAX_VALUE / 10 || (num == Integer.MAX_VALUE / 10 && temp > 7)) {
                return 0;
            }
            if (num < Integer.MIN_VALUE / 10 || (num == Integer.MIN_VALUE / 10 && temp < -8)) {
                return 0;
            }
            num = num * 10 + temp;
        }
        return num;
    }
}
